﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using NUnit.Framework;
using CondominioWeb.Persistencia.NHibernate;
using CondominioWeb.Dominio;

namespace CondominioWeb.Pruebas
{
    [TestFixture]
    public class TestZonaDAO
    {
        private ZonaDAO zonaDAO = new ZonaDAO();
        [Test]
        public void TestCrear()
        {
            // 1. Instanciando el objeto TO
            Zona nuevaZona = new Zona();
            nuevaZona.Codigo_Zona = 2;
            nuevaZona.Descripcion = "norte";
            nuevaZona.Estado = "activo";
            // 2. Llamada al método del DAO a probar
            Zona ZonaCreada = zonaDAO.Crear(nuevaZona);
            // 4. Implementar las validaciones
            Assert.NotNull(ZonaCreada);
            Assert.AreEqual(nuevaZona.Codigo_Zona, ZonaCreada.Codigo_Zona);
        }

        [Test]
        public void TestModificar()
        {
            // 1. Instanciando el objeto TO
            Zona nuevaZona = new Zona();
            nuevaZona.Codigo_Zona = 2;
            nuevaZona.Descripcion = "norte X";
            nuevaZona.Estado = "activo";
            // 2. Llamada al método del DAO a probar
            Zona ZonaCreada = zonaDAO.Modificar(nuevaZona);
            // 4. Implementar las validaciones
            Assert.NotNull(ZonaCreada);
            Assert.AreEqual(nuevaZona.Codigo_Zona, ZonaCreada.Codigo_Zona);
            Assert.AreEqual(nuevaZona.Descripcion, ZonaCreada.Descripcion);
        }

        [Test]
        public void TestObtener()
        {
            int _cod_Zona;
            // 1. Instanciando el objeto TO
            // 2. Llamada al método del DAO a probar
            _cod_Zona = 1;
            Zona ZonaConsulta = zonaDAO.Obtener(_cod_Zona);

            // 4. Implementar las validaciones
            Assert.NotNull(ZonaConsulta);
            Assert.AreEqual(ZonaConsulta.Codigo_Zona, _cod_Zona);
            Assert.IsNotNull(ZonaConsulta.Descripcion);
        }
        [Test]
        public void TestEliminar()
        {
            // 1. Instanciando el objeto TO
            Zona oZona = new Zona();
            oZona.Codigo_Zona = 1;
            // 2. Llamada al método del DAO a probar
            Assert.Catch<Exception>(delegate
            {
                zonaDAO.Eliminar(oZona);
            });
            Assert.DoesNotThrow(delegate
            {
                zonaDAO.Eliminar(oZona);
            });

            // 3. Implementar las validaciones
            Assert.NotNull(oZona);
            Assert.NotNull(oZona.Codigo_Zona);

        }

    }
}